#ifndef _MY_UTILITY_
#define _MY_UTILITY_
// 实用工具类的实现
 #include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>
#include<iostream>
#include<string>

namespace ldcLOG
{
    namespace Utility
    {
        class Date //获取系统时间
        {
            public:
            static size_t GetTime()
            {
                return (size_t)time(nullptr);
            }
        };

        class File
        {
            public:
            static bool Exist(const std::string& pathname)
            {
                //判断文件是否存在？
                struct stat st;
                if(stat(pathname.c_str(),&st)>0)
                {
                    return true;
                }
                return false;
            }
            static std::string GetPath(const std::string&pathname)
            {
                //获取文件所在路径  ->  ./abc/bcd/ef.txt
              size_t pos=  pathname.find_last_of("/\\");
              if(pos==std::string::npos)
              {
                //没有'/' 或'\' 表示为当前路径
                return ".";
              }
              return pathname.substr(0,pos+1);// 返回./abc/bcd/
            }
            static void createDirectory(const std::string&pathname)
            {
                size_t pos=0,index=0;
                //创建目录 -> ./abc/bcd/eff.txt
                while(index<pathname.size())
                {
              pos=  pathname.find_first_of("/\\",index);
              if(pos==std::string::npos)
              {
                //找不到'/' '\'  说明没有父级目录，直接创建
                mkdir(pathname.c_str(),0777);//全部权限赋予
              }
                //获取父级路径
                std::string parentpath=pathname.substr(0,pos+1);//pos-index +1 ??why
                //如果路径存在继续往下走
                if(Exist(parentpath)){index=pos+1;continue;}
                //如果不存在就创建
                mkdir(parentpath.c_str(),0777);
                index=pos+1;
                }

            }
        };

    }
}

#endif